import datetime

import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
from matplotlib.dates import MONDAY, DateFormatter, DayLocator, WeekdayLocator
import os.path
import io

from mplfinance.original_flavor import candlestick_ohlc

def test_finance_demo():

    date1 = "2004-2-1"
    date2 = "2004-4-12"
    
    
    mondays = WeekdayLocator(MONDAY)        # major ticks on the mondays
    alldays = DayLocator()              # minor ticks on the days
    weekFormatter = DateFormatter('%b %d')  # e.g., Jan 12
    dayFormatter = DateFormatter('%d')      # e.g., 12
    
    infile = os.path.join('examples','data','yahoofinance-INTC-19950101-20040412.csv')
    quotes = pd.read_csv(infile,
                         index_col=0,
                         parse_dates=True,
                         infer_datetime_format=True)
    
    # select desired range of dates
    quotes = quotes[(quotes.index >= date1) & (quotes.index <= date2)]
    
    fig, ax = plt.subplots()
    fig.subplots_adjust(bottom=0.2)
    ax.xaxis.set_major_locator(mondays)
    ax.xaxis.set_minor_locator(alldays)
    ax.xaxis.set_major_formatter(weekFormatter)
    # ax.xaxis.set_minor_formatter(dayFormatter)
    
    # plot_day_summary(ax, quotes, ticksize=3)
    candlestick_ohlc(ax, zip(mdates.date2num(quotes.index.to_pydatetime()),
                             quotes['Open'], quotes['High'],
                             quotes['Low'], quotes['Close']),
                     width=0.6)
    
    ax.xaxis_date()
    ax.autoscale_view()
    plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
    
    buf = io.BytesIO()
    plt.savefig(buf)
